// 字面量进行类型声明
var a;
a = 10;
console.log(a);
// a = 11 此时就不能赋值了 会报错 有点const的味道
// 或者的意思 可以使用 | 来连接多个类型
// 我们将这个称之为联合类型
var b;
b = "male";
b = "female";
var c;
c = true;
c = 'hello';
// any为任意类型 与js相似
// 当一个变量设置了any时，相当于对于该变量关闭了ts的类型检测
// 所以我们不建议使用
// 显示声明
var d;
// 隐式声明
// let d
d = 10;
d = 'hello';
d = true;
// 当我们不知道参数的类型的时候
// 我们可以使用unknown
var e;
e = 10;
e = 'hello';
e = true;
// exp: 我们可以发现any是会对其他变量产生影响的
var s;
s = d;
// console.log(s) true 竟然可以输出
// 但是unknown 就不会
e = 'hello';
// s = e // 这时就会报错 因为unknow不能赋值给确认类型的变量
// unknown 相当于安全的any
// 若想要不报错 我们可以这样 做一个类型检测
if (typeof e === "string") {
    s = e;
}
// 当然 我们也可以这样
// 叫做类型断言 可以用来告诉解析器变量的实际类型
s = e;
// 或者
s = e;
// function fn(): boolean {
//     return true
// }
// 如果函数没有返回值
function fn() {
    return null;
    return undefined;
    // 都是可以的
}
// never表示永远不会返回结果
function fn1() {
    throw new Error('报错了');
}
